package com.atguigu.ext;

import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;

/**
 * ApplicationListener: 监听容器中发布的事件。事件驱动模型开发;
 *  public interface ApplicationListener<E extends ApplicationEvent>
 *         监听ApplicationEvent 及其下面的子事件
 *
 *  步骤:
 *      1): 写一个监听器来实现 ApplicationListener接口(接口中的类型是ApplicationEvent及其子类)
 *      2): 把监听器加入到容器(不然监听器找不到对应的组件)
 *      3): 只要容器中有相关的事件发布，回调就会被调用
 *      4): 自己发布一个事件
 *          方法1：applicationContext.publishEvent(myEvent);
 *          方法2：Autorid ApplicationEventMulticaster multicaster
 */
@Component
public class MyApplicationListener implements ApplicationListener<ApplicationEvent> {
    //当容器发布此事件以后，方法会触发
    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        System.out.println("收到事件-"+event);
    }
}
